Many computer hardware and/or software products (referred to herein as devices) are designed to operate despite challenging use conditions such as high interaction volumes, deliberate attacks, etc. Various testing methods are used to verify the ability of a device-under-test (DUT) to withstand different use conditions. Scale or volume testing methods model and apply high interaction volume conditions to the DUT. Such methods typically involve presenting high levels of concurrent users, high numbers of active connections, high incoming/outgoing bandwidth use, etc., and monitoring the resultant behavior of the DUT. Mutation testing methods generate and apply potential attacks on the DUT by generating mutated messages, presenting the mutated messages to the DUT, and monitoring responses from the DUT.
Some testing methods generate scale and mutation tests based on actual network traffic exchanged between devices. Often, these tests are generated based on packet captures, or pcaps, which include actual packets exchanged between devices in use. The captured packets are used to generate scale and/or mutation tests. The tests are then applied against one or more DUT's. Generating tests from packet captures, however, has certain limitations, especially in the context of complex applications, such as web applications for providing audio and/or video content. These applications transmit and receive large volumes of data, often in coordination with many hosts. Deriving high-level application state information from raw packet captures is computationally expensive. Existing packet capture-based testing methods either ignore high-level application state information (e.g., they are not stateful) or are limited to relatively simple applications. Further, many applications utilize encrypted communications. Generating tests based on encrypted packet captures is not possible without knowing the appropriate keys for decrypting each packet. Even with the proper keys, decrypting each packet adds to processing overhead.